﻿/*-------------------------------------------------------------------------
* 命名空间: MyToDo.ValuesConverters/ColorToBrushConverter
* 类       名: ColorToBrushConverter
* 功      能:  TD
* 时      间:  2023/12/18 17:04:54
* 版      本:  V1.0
* 作      者:  Fioman
* 格      言:  Talk is cheap,show me the code ^_^
*-------------------------------------------------------------------------*/
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
using System.Windows.Media;

namespace MyToDo.ValuesConverters
{
    /// <summary>
    /// Theme的Color和ColorBrush的转换器.
    /// 注意这里的Binding.DoNothing和Default(Color)的区别?
    /// Binding.DoNothing是一个特殊的值,表示绑定不应该转化值,也不应该使用FallbackValue或者是DefaultValue,
    /// 绑定操作应该什么都不做.保持目标值不变,和直接return value是等价的.
    /// 而使用default(Color)这种写法返回的是Color类型的默认值,在ConverterBack方法中使用,因此返回的是一个Color对象.
    /// 对于结果类型Color,默认值是所有数值属性都被设置为零的实例.
    /// </summary>
    public class ColorToBrushConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value is Color color)
            {
                return new SolidColorBrush(color);
            }
            return Binding.DoNothing;
        }



        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value is SolidColorBrush brush)
            {
                return brush.Color;
            }
            return default(Color);
        }
    }
}
